Pré-requisitos

## para instalar um pacote use
# install.packages("raster")
## limpando espaço de trabalho
rm(list = ls())
library(devtools)
## pacotes requeridos
pcks <- c("dplyr", "ggplot2","viridis", "lubridate", "scales", "raster", "viridis", "ggrepel")
library(easypackages)
easypackages::libraries(pcks)
## Loading required package: dplyr
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
## Loading required package: ggplot2
## Loading required package: viridis
## Loading required package: viridisLite
## Loading required package: lubridate
## 
## Attaching package: 'lubridate'
## The following object is masked from 'package:base':
## 
##     date
## Loading required package: scales
## Loading required package: raster
## Loading required package: sp
## 
## Attaching package: 'raster'
## The following object is masked from 'package:dplyr':
## 
##     select
## Loading required package: ggrepel
## All packages loaded successfully
source("/home/jonas/IC/R/gg_bubble.R")

Dados

Delimitação dos estados brasileiros

limites2015 <- "ftp://geoftp.ibge.gov.br/cartas_e_mapas/bases_cartograficas_continuas/bc250/versao2015/Shapefile/Limites_v2015_20160809.zip"
# nome e caminho para o arquivo que será baixado, altere se necessário
(zip_file <- paste0("../data/", basename(limites2015)))
## [1] "../data/Limites_v2015_20160809.zip"
zip_file <- "/home/jonas/data/Limites_v2015_20160809.zip"
# baixando arquivo compactado
download.file(limites2015, destfile = zip_file)
# diretório para descompactar
extract_dir <- gsub("\\.zip", "", zip_file)
extract_dir
## [1] "/home/jonas/data/Limites_v2015_20160809"
# descompactando arquivo
unzip(zip_file, exdir = extract_dir)
# lista dos shapefiles contidos no arquivo compactado
shapefiles_list <- list.files(extract_dir,
                              pattern = "shp$", 
                              recursive = TRUE, 
                              full.names = TRUE)
# shapefiles_list
# nome do arquivo shapefile dos estados
br_states_file <- grep(x = shapefiles_list, 
                       pattern = "Unidade_Federacao", 
                       value = TRUE)
# importa shape
br_states <- shapefile(br_states_file)
## Warning in rgdal::readOGR(dirname(x), fn, stringsAsFactors =
## stringsAsFactors, : Z-dimension discarded
# projeta para lonlat
br_states <- spTransform(br_states, CRSobj = CRS("+proj=longlat +ellps=WGS84"))
plot(br_states, axes = TRUE)

sul <- br_states[br_states@data$NOME %in% c("Rio Grande do Sul", "Santa Catarina", "Paraná"), ]
# 'fortificando' os dados (conversão para dataframe)
class(sul)
sul_df <- fortify(sul)
## Regions defined for each Polygons
head(sul_df)
class(sul_df)

Altitude do terreno

dem <- getData(name = "alt", download = TRUE, path = "/home/jonas/data", country = "BRA")
dem
## class       : RasterLayer 
## dimensions  : 4716, 5388, 25409808  (nrow, ncol, ncell)
## resolution  : 0.008333333, 0.008333333  (x, y)
## extent      : -74.1, -29.2, -33.9, 5.4  (xmin, xmax, ymin, ymax)
## coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 
## data source : /home/jonas/data/BRA_msk_alt.grd 
## names       : BRA_msk_alt 
## values      : -127, 2665  (min, max)
class(dem)
# extent(dem)
# minha_extent <- extent(-50, -40, -20, -10)
# plot(dem); plot(minha_extent, add = TRUE)
dem_sul <- crop(dem, sul)
# mascará para os estados
dem_sul <- mask(dem, sul)
#plot(dem_sul); plot(sul, add = TRUE)
dem_sul_df <- data.frame(lon = xFromCell(dem_sul, cell = 1:ncell(dem_sul)),
                         lat = yFromCell(dem_sul, cell = 1:ncell(dem_sul)),
                         alt = values(dem_sul))
#summary(dem_sul_df)
# removendo linhas de dados faltantes
dem_sul_df <- dem_sul_df[complete.cases(dem_sul_df), ]
head(dem_sul_df)
class(dem_sul_df)

Informações das EM

info <- readRDS(file = "/home/jonas/IC/output/tar_summary_inmet_sul_2008_2016.rds")
info
# estrutura dos dados
str(info)
# nome das variáveis do data.frame (tabela de dados)
names(info)
info <- read.table(file = "mydata.txt", 
                   header = FALSE,  # dados tem cabeçalho TRUE/FALSE
                   sep = " ",       # separador das colunas (",", "\t", " ")
                   na.strings = "-999.9") # string repreentando dados faltantes
# se os dados não tiverem cabeçalho (header = FALSE)
names(info) <- c("site", "tmax_med", "tmin_med", ...)
# salvando como RDS para importação mais rápida
saveRDS(info, "info_sumary_tair_sul.rds")

Gráfico com período de dados

# mapa da % de dados faltantes em cada EM
tmin_plot <- gg_bubble(data = info      # tabela de info das EM
                       ,z = "tavg"         # coluna da tabela data
                       ,colors_z = viridis     # paleta para variação de z
                       ,limites = sul_df       # dataframe com contorno da região (gerado de algum shapefile)
                       ,raster_bg = dem_sul_df # raster de background (altitude, decividade, etc)
                       ,colors_bg = gray.colors # paleta de cores do raster 
                       
                       ,z_legend = "Tmin (°C)" # texto para legenda
                       ,text_color = "red")     # cor do texto para o identificador ("site") das estações 
## Scale for 'fill' is already present. Adding another scale for 'fill',
## which will replace the existing scale.
tmin_plot

# para período de dados
period_plot <-  gg_bubble(data = info
                          ,z = "period"
                          ,colors_z = viridis
                          ,limites = sul_df 
                          #,raster_bg = mdet_rs_df 
                          #,colors_bg = gray.colors
                          ,z_legend = "Period (years)"
                          ,text_color = "black"
                          ,text_size = 2.5) 
period_plot

# para tavg de dados
tavg_plot <-  gg_bubble(data = info
                          ,z = "tavg"
                          ,colors_z = viridis
                          ,limites = sul_df 
                          #,raster_bg = mdet_rs_df 
                          #,colors_bg = gray.colors
                          ,z_legend = "Average Temp. (°)"
                          ,text_color = "black"
                          ,text_size = 2.5) 
tavg_plot

# para tmax_abs de dados
tmax_abs_plot <-  gg_bubble(data = info
                          ,z = "tmax_abs"
                          ,colors_z = viridis
                          ,limites = sul_df 
                          #,raster_bg = mdet_rs_df 
                          #,colors_bg = gray.colors
                          ,z_legend = "Abs. Max. Temp. (°)"
                          ,text_color = "black"
                          ,text_size = 2.5) 
tmax_abs_plot

# para tmin_abs de dados
tmin_abs_plot <-  gg_bubble(data = info
                          ,z = "tmin_abs"
                          ,colors_z = viridis
                          ,limites = sul_df 
                          #,raster_bg = mdet_rs_df 
                          #,colors_bg = gray.colors
                          ,z_legend = "Abs. Min. Temp. (°)"
                          ,text_color = "black"
                          ,text_size = 2.5) 
tmin_abs_plot

# para missing de dados
missing_plot <-  gg_bubble(data = info
                          ,z = "missing"
                          ,colors_z = viridis
                          ,limites = sul_df 
                          #,raster_bg = mdet_rs_df 
                          #,colors_bg = gray.colors
                          ,z_legend = "Missing (%)"
                          ,text_color = "black"
                          ,text_size = 2.5) 
missing_plot

dados <- arrange(
  readRDS("/home/jonas/IC/data/dataSel_inmet_sul_localtime.rds"), site)

total.dates(dados)
# para long_gap de dados
long_gap_plot <-  gg_bubble(data = info
                          ,z = "long_gap"
                          ,colors_z = viridis
                          ,limites = sul_df 
                          #,raster_bg = mdet_rs_df 
                          #,colors_bg = gray.colors
                          ,z_legend = "Long Gap (hours)"
                          ,text_color = "black"
                          ,text_size = 2.5) 
long_gap_plot

failure.datas(dados)
# para tmax_d de dados
tmax_d_plot <-  gg_bubble(data = info
                          ,z = "tmax_d"
                          ,colors_z = viridis
                          ,limites = sul_df 
                          #,raster_bg = mdet_rs_df 
                          #,colors_bg = gray.colors
                          ,z_legend = "Daily Max. Temp. (°)"
                          ,text_color = "black"
                          ,text_size = 2.5) 
tmax_d_plot

# para tmin_d de dados
tmin_d_plot <-  gg_bubble(data = info
                          ,z = "tmin_d"
                          ,colors_z = viridis
                          ,limites = sul_df 
                          #,raster_bg = mdet_rs_df 
                          #,colors_bg = gray.colors
                          ,z_legend = "Daily Min. Temp. (°)"
                          ,text_color = "black"
                          ,text_size = 2.5) 
tmin_d_plot

# para tavg_d de dados
tavg_d_plot <-  gg_bubble(data = info
                          ,z = "tavg_d"
                          ,colors_z = viridis
                          ,limites = sul_df 
                          #,raster_bg = mdet_rs_df 
                          #,colors_bg = gray.colors
                          ,z_legend = "Daily Average Temp. (°)"
                          ,text_color = "black"
                          ,text_size = 2.5) 
tavg_d_plot

# para dtr_d de dados
dtr_d_plot <-  gg_bubble(data = info
                          ,z = "dtr_d"
                          ,colors_z = viridis
                          ,limites = sul_df 
                          #,raster_bg = mdet_rs_df 
                          #,colors_bg = gray.colors
                          ,z_legend = " Daily Ther. Amp. (°)"
                          ,text_color = "black"
                          ,text_size = 2.5) 
dtr_d_plot

# para n_avg de dados
n_avg_plot <-  gg_bubble(data = info
                          ,z = "n_avg"
                          ,colors_z = viridis
                          ,limites = sul_df 
                          #,raster_bg = mdet_rs_df 
                          #,colors_bg = gray.colors
                          ,z_legend = "N Average"
                          ,text_color = "black"
                          ,text_size = 2.5) 
n_avg_plot

# para long_gap de dados
alt_plot <-  gg_bubble(data = info
                          ,z = "alt"
                          ,colors_z = viridis
                          ,limites = sul_df 
                          #,raster_bg = mdet_rs_df 
                          #,colors_bg = gray.colors
                          ,z_legend = "Altitude (m)"
                          ,text_color = "black"
                          ,text_size = 2.5) 
alt_plot